home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 April: Mac OS SDK / Dev.CD Apr 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / PInterfaces / DeskBus.p < prev    next >
Encoding:
Text File  |  1996-01-15  |  6.0 KB  |  213 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        DeskBus.p
  3.  
  4.      Contains:    Apple Desktop Bus (ADB) Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1.2 on ETO #20
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT DeskBus;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __DESKBUS__}
  30. {$SETC __DESKBUS__ := 1}
  31.  
  32. {$I+}
  33. {$SETC DeskBusIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __MIXEDMODE__}
  43. {$I MixedMode.p}
  44. {$ENDC}
  45.  
  46. {$PUSH}
  47. {$ALIGN MAC68K}
  48. {$LibExport+}
  49.     
  50. TYPE
  51.     ADBAddress = SInt8;
  52.  
  53.     {
  54.         ADBCompletionProcPtr uses register based parameters on the 68k and cannot
  55.         be written in or called from a high-level language without the help of
  56.         mixed mode or assembly glue.
  57.  
  58.         In:
  59.          => dataBuffPtr     A0.L
  60.          => opDataAreaPtr    A2.L
  61.          => command         D0.L
  62.     }
  63.     ADBCompletionProcPtr = Register68kProcPtr;  { register PROCEDURE ADBCompletion(dataBuffPtr: Ptr; opDataAreaPtr: Ptr; command: LONGINT); }
  64.     ADBCompletionUPP = UniversalProcPtr;
  65.  
  66. CONST
  67.     uppADBCompletionProcInfo = $007B9802; { Register PROCEDURE (4 bytes in A0, 4 bytes in A2, 4 bytes in D0); }
  68.  
  69. FUNCTION NewADBCompletionProc(userRoutine: ADBCompletionProcPtr): ADBCompletionUPP;
  70.     {$IFC NOT GENERATINGCFM }
  71.     INLINE $2E9F;
  72.     {$ENDC}
  73.  
  74. PROCEDURE CallADBCompletionProc(dataBuffPtr: Ptr; opDataAreaPtr: Ptr; command: LONGINT; userRoutine: ADBCompletionUPP);
  75.     {$IFC NOT GENERATINGCFM}
  76.     {To be implemented:  Glue to move parameters into registers.}
  77.     {$ENDC}
  78. TYPE
  79.     {
  80.         ADBDeviceDriverProcPtr uses register based parameters on the 68k and cannot
  81.         be written in or called from a high-level language without the help of
  82.         mixed mode or assembly glue.
  83.  
  84.         In:
  85.          => devAddress      D0.B
  86.          => devType         D1.B
  87.     }
  88.     ADBDeviceDriverProcPtr = Register68kProcPtr;  { register PROCEDURE ADBDeviceDriver(devAddress: ByteParameter; devType: ByteParameter); }
  89.     ADBDeviceDriverUPP = UniversalProcPtr;
  90.  
  91. CONST
  92.     uppADBDeviceDriverProcInfo = $00050802; { Register PROCEDURE (1 byte in D0, 1 byte in D1); }
  93.  
  94. FUNCTION NewADBDeviceDriverProc(userRoutine: ADBDeviceDriverProcPtr): ADBDeviceDriverUPP;
  95.     {$IFC NOT GENERATINGCFM }
  96.     INLINE $2E9F;
  97.     {$ENDC}
  98.  
  99. PROCEDURE CallADBDeviceDriverProc(devAddress: ByteParameter; devType: ByteParameter; userRoutine: ADBDeviceDriverUPP);
  100.     {$IFC NOT GENERATINGCFM}
  101.     {To be implemented:  Glue to move parameters into registers.}
  102.     {$ENDC}
  103. TYPE
  104.     {
  105.         ADBServiceRoutineProcPtr uses register based parameters on the 68k and cannot
  106.         be written in or called from a high-level language without the help of
  107.         mixed mode or assembly glue.
  108.  
  109.         In:
  110.          => dataBuffPtr     A0.L
  111.          => completionProc    A1.L
  112.          => dataPtr         A2.L
  113.          => command         D0.L
  114.     }
  115.     ADBServiceRoutineProcPtr = Register68kProcPtr;  { register PROCEDURE ADBServiceRoutine(dataBuffPtr: Ptr; completionProc: ADBCompletionUPP; dataPtr: Ptr; command: LONGINT); }
  116.     ADBServiceRoutineUPP = UniversalProcPtr;
  117.  
  118. CONST
  119.     uppADBServiceRoutineProcInfo = $0F779802; { Register PROCEDURE (4 bytes in A0, 4 bytes in A1, 4 bytes in A2, 4 bytes in D0); }
  120.  
  121. FUNCTION NewADBServiceRoutineProc(userRoutine: ADBServiceRoutineProcPtr): ADBServiceRoutineUPP;
  122.     {$IFC NOT GENERATINGCFM }
  123.     INLINE $2E9F;
  124.     {$ENDC}
  125.  
  126. PROCEDURE CallADBServiceRoutineProc(dataBuffPtr: Ptr; completionProc: ADBCompletionUPP; dataPtr: Ptr; command: LONGINT; userRoutine: ADBServiceRoutineUPP);
  127.     {$IFC NOT GENERATINGCFM}
  128.     {To be implemented:  Glue to move parameters into registers.}
  129.     {$ENDC}
  130. TYPE
  131.     {
  132.         ADBInitProcPtr uses register based parameters on the 68k and cannot
  133.         be written in or called from a high-level language without the help of
  134.         mixed mode or assembly glue.
  135.  
  136.         In:
  137.          => callOrder       D0.B
  138.     }
  139.     ADBInitProcPtr = Register68kProcPtr;  { register PROCEDURE ADBInit(callOrder: ByteParameter); }
  140.     ADBInitUPP = UniversalProcPtr;
  141.  
  142. CONST
  143.     uppADBInitProcInfo = $00000802; { Register PROCEDURE (1 byte in D0); }
  144.  
  145. FUNCTION NewADBInitProc(userRoutine: ADBInitProcPtr): ADBInitUPP;
  146.     {$IFC NOT GENERATINGCFM }
  147.     INLINE $2E9F;
  148.     {$ENDC}
  149.  
  150. PROCEDURE CallADBInitProc(callOrder: ByteParameter; userRoutine: ADBInitUPP);
  151.     {$IFC NOT GENERATINGCFM}
  152.     {To be implemented:  Glue to move parameters into registers.}
  153.     {$ENDC}
  154.  
  155. TYPE
  156.     ADBOpBlock = RECORD
  157.         dataBuffPtr:            Ptr;                                    { address of data buffer }
  158.         opServiceRtPtr:            ADBServiceRoutineUPP;                    { service routine pointer }
  159.         opDataAreaPtr:            Ptr;                                    { optional data area address }
  160.     END;
  161.  
  162.     ADBOpBPtr = ^ADBOpBlock;
  163.  
  164.     ADBDataBlock = PACKED RECORD
  165.         devType:                SInt8;                                    { device type }
  166.         origADBAddr:            ADBAddress;                                { original ADB Address }
  167.         dbServiceRtPtr:            ADBServiceRoutineUPP;                    { service routine pointer }
  168.         dbDataAreaAddr:            Ptr;                                    { data area address }
  169.     END;
  170.  
  171.     ADBDBlkPtr = ^ADBDataBlock;
  172.  
  173.     ADBSetInfoBlock = RECORD
  174.         siService:                ADBServiceRoutineUPP;                    { service routine pointer }
  175.         siDataAreaAddr:            Ptr;                                    { data area address }
  176.     END;
  177.  
  178.     ADBSInfoPtr = ^ADBSetInfoBlock;
  179.  
  180.  
  181. PROCEDURE ADBReInit;
  182.     {$IFC NOT GENERATINGCFM}
  183.     INLINE $A07B;
  184.     {$ENDC}
  185. FUNCTION ADBOp(data: Ptr; compRout: ADBCompletionUPP; buffer: Ptr; commandNum: INTEGER): OSErr;
  186. FUNCTION CountADBs: INTEGER;
  187.     {$IFC NOT GENERATINGCFM}
  188.     INLINE $A077, $3E80;
  189.     {$ENDC}
  190. FUNCTION GetIndADB(VAR info: ADBDataBlock; devTableIndex: INTEGER): ADBAddress;
  191.     {$IFC NOT GENERATINGCFM}
  192.     INLINE $301F, $205F, $A078, $1E80;
  193.     {$ENDC}
  194. FUNCTION GetADBInfo(VAR info: ADBDataBlock; adbAddr: ByteParameter): OSErr;
  195.     {$IFC NOT GENERATINGCFM}
  196.     INLINE $101F, $205F, $A079, $3E80;
  197.     {$ENDC}
  198. FUNCTION SetADBInfo({CONST}VAR info: ADBSetInfoBlock; adbAddr: ByteParameter): OSErr;
  199.     {$IFC NOT GENERATINGCFM}
  200.     INLINE $101F, $205F, $A07A, $3E80;
  201.     {$ENDC}
  202.  
  203. {$ALIGN RESET}
  204. {$POP}
  205.  
  206. {$SETC UsingIncludes := DeskBusIncludes}
  207.  
  208. {$ENDC} {__DESKBUS__}
  209.  
  210. {$IFC NOT UsingIncludes}
  211.  END.
  212. {$ENDC}
  213.